package com.wef.system.service.impl;

import java.util.List;
import java.util.Set;

import com.gfa4j.exception.ValidateRuntimeException;
import com.gfa4j.hibernate.BaseObject;
import com.gfa4j.service.impl.BaseServiceImpl;
import com.wef.system.entity.RoleMenuItem;
import com.wef.system.service.RoleMenuItemService;

public class RoleMenuItemServiceImpl extends BaseServiceImpl implements RoleMenuItemService {

	public RoleMenuItem addRoleMenuItem(RoleMenuItem roleMenuItem){
		
		return (RoleMenuItem) super.saveObject(roleMenuItem);
	}

	public void deleteRoleMenuItem(RoleMenuItem roleMenuItem) {		
		super.deleteObject(roleMenuItem);
		
	}

	public RoleMenuItem saveOrUpdateRoleMenuItem(RoleMenuItem roleMenuItem){	
		if (roleMenuItem.getRowStatus() == BaseObject.ROWSTATUS_ADDED) {
			return this.addRoleMenuItem(roleMenuItem);
		}
		if (roleMenuItem.getRowStatus() == BaseObject.ROWSTATUS_MODIFIED) {
			return this.updateRoleMenuItem(roleMenuItem);
		}
		if (roleMenuItem.getRowStatus() == BaseObject.ROWSTATUS_DELETED) {
			this.deleteRoleMenuItem(roleMenuItem);
			return null ;
		}
		return roleMenuItem;
	}

	public Set<RoleMenuItem> saveOrUpdateRoleMenuItems(Set<RoleMenuItem> roleMenuItems){
		StringBuilder errorString = new StringBuilder();
		for (RoleMenuItem roleMenuItem : roleMenuItems) {
			try {
				saveOrUpdateRoleMenuItem(roleMenuItem);
			} catch (ValidateRuntimeException ex) {
				errorString.append(ex.getMessage() + "\n");
			}
		}
		if (errorString.length() > 0) {
			throw new ValidateRuntimeException(errorString.toString());
		}
		return roleMenuItems;
	}

	public RoleMenuItem updateRoleMenuItem(RoleMenuItem roleMenuItem) {
		return (RoleMenuItem) super.updateObject(roleMenuItem);
	}	
	

}
